class Food {
}
class Fruit extends Food {
}
class Apple extends Fruit {
}
class Banana extends Fruit {
}

class Message<T> {
    private T message ;
    public T getMessage() {
        return message;
    }
    public void setMessage(T message) {
        this.message = message;
    }
}
public class TestDemo {
    public static void main(String[] args) {
        Message<Food> message = new Message<>() ;
        message.setMessage(new Food());
//        func(message);

//        Message<Fruit> message2 = new Message<>();
//        message2.setMessage(new Fruit());
//        func(message2);
    }
//    public static void func(Message<? super Fruit> temp){
//         //此时可以修改！！  添加的是Fruit或者Fruit的子类
//        temp.setMessage(new Food());//这个是Fruit的子类
//        temp.setMessage(new Fruit());//这个是Fruit本身
//        //不能创建对象来接收，无法确定是Fruit的那个父类
//        Fruit fruit = temp.getMessage();
//        System.out.println(temp.getMessage());//只能直接输出
   // }






//    public static void fun(Message<? extends Fruit> temp){
//        temp.setMessage(new Banana());
//
//        System.out.println(temp.getMessage());
//    }
}

